home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Hackers Handbook - Millenium Edition
/
Hackers Handbook.iso
/
files
/
c_scripts
/
pron.c
< prev
next >
Wrap
C/C++ Source or Header
|
1998-12-05
|
6KB
|
196 lines
/* pr0n clicker 1.0 by HoGs HeaD
* -----------------------------
* Howdy. Whoah, it's been a while since I released a program! Well, su1d
* gave me the idea for this program and he is supposedly going to make a
* Windows version soon.
*
* What this program does: You know those banners that give you ten cents
* or something cheap when they're clicked? Well, this program will click
* a banner with a list of wingates you have, so you can just have a large
* list of wingates, turn this on, and start gaining some money.
*
* This also has functions for downloading http files through wingates or just
* plain downloading the http file. You may use these functions provided they
* are in a different program than this, and that you don't sell the program
* you use that code for. When you download this code you agree to not claim
* this code as your own.
*
* Special thanks to: SIN, duke(for being a massah debugger), su1d(for the
* idea)
* ------- hawgshead@yahoo.com ------------------------------------- */
#include <stdio.h>
#include <string.h>
#include <netdb.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netinet/ip.h>
/* Cute function to download an HTTP file, compliments of me. */
void downloadHttpFile(char *server, char *file)
{
FILE *fp;
struct hostent *getFrom;
struct sockaddr_in from;
char inBuff[100], *oldBuff, outBuff[100];
int sckFd, isConnected, numSent;
if(isdigit(*server)){
from.sin_addr.s_addr = inet_addr(server);
}else{
getFrom = gethostbyname(server);
strncpy((char *)&from.sin_addr, (char *)getFrom->h_addr, sizeof(from.sin_addr));
}
from.sin_family = AF_INET;
from.sin_port = htons(80);
sckFd = socket(AF_INET, SOCK_STREAM, 0);
if(sckFd < 0){
printf("Socket could not be established.\n");
exit(0);
};
isConnected = connect(sckFd, (struct sockaddr *)&from, sizeof(from));
if(isConnected < 0){
printf("Connection failed.\n");
exit(0);
}else{
printf("Connection success.\n");
snprintf(outBuff, sizeof(outBuff), "GET %s\n", file);
numSent=send(sckFd, outBuff, sizeof(outBuff), 0);
fflush(0);
if((fp=fopen("temp.html", "w"))==NULL){
printf("Error opening temporary file for writing!\n");
exit(0);
}
get:
numSent=recv(sckFd, inBuff, sizeof(inBuff), 0);
oldBuff=inBuff;
fprintf(fp, "%s", inBuff);
if((strstr(oldBuff, "</HTML>"))==NULL){
bzero(inBuff, sizeof(inBuff));
goto get;
}else{
fclose(fp);
}
printf("HTTP download complete.\n");
};
close(sckFd);
}
/* Download an HTTP file through a WinGate. Woop! */
void throughWingate(char *wserver, char *httpServer, char *wfile)
{
FILE *wfp;
struct hostent *wgetFrom;
struct sockaddr_in wfrom;
char winBuff[100], *woldBuff, woutBuff[100];
int wsckFd, wisConnected, wnumSent;
if(isdigit(*wserver)){
wfrom.sin_addr.s_addr = inet_addr(wserver);
}else{
wgetFrom = gethostbyname(wserver);
strncpy((char *)&wfrom.sin_addr, (char *)wgetFrom->h_addr, sizeof(wfrom.sin_addr));
}
wfrom.sin_family = AF_INET;
wfrom.sin_port = htons(23);
wsckFd = socket(AF_INET, SOCK_STREAM, 0);
if(wsckFd < 0){
printf("Socket could not be established.\n");
exit(0);
};
wisConnected = connect(wsckFd, (struct sockaddr *)&wfrom, sizeof(wfrom));
if(wisConnected < 0){
printf("Connection could not be established.\n");
}else{
printf("Connection success.\n");
snprintf(woutBuff, sizeof(woutBuff), "%s 80\n", httpServer);
do{
bzero(winBuff, sizeof(winBuff));
read(wsckFd, winBuff, sizeof(winBuff));
}while((strstr(winBuff, "WinGate>"))==NULL);
printf("Connection established, sending commands.\n");
write(wsckFd, woutBuff, strlen(woutBuff));
do{
bzero(winBuff, sizeof(winBuff));
read(wsckFd, winBuff, sizeof(winBuff));
}while((strstr(winBuff, "Connected"))==NULL);
printf("Connection established through WinGate->Server.\n");
snprintf(woutBuff, sizeof(woutBuff), "GET %s\n", wfile);
write(wsckFd, woutBuff, strlen(woutBuff));
fflush(0);
if((wfp=fopen("temp.html", "w"))==NULL){
printf("Unable to open temporary file for output!\n");
exit(0);
}
getit:
read(wsckFd, winBuff, sizeof(winBuff));
woldBuff=winBuff;
fprintf(wfp, "%s", winBuff);
if((strstr(winBuff, "</HTML>"))==NULL){
bzero(winBuff, sizeof(winBuff));
goto getit;
}else{
fclose(wfp);
}
printf("HTTP download complete.\n");
}
close(wsckFd);
}
/* Parse the WinGate file and try each entry in the file. */
void parseGates(char *gateFile, char *httpServ, char *fileName)
{
FILE *gate;
char currGate[100];
int i=0;
if((gate=fopen(gateFile, "r"))==NULL){
printf("Error opening WinGate list.\n");
exit(0);
}
while(fgets(currGate, 80, gate) != NULL){
*(strchr(currGate, '\n')) = '\0';
throughWingate(currGate, httpServ, fileName);
}
fclose(gate);
}
/* Main function. */
void main(int argc, char **argv){
printf("HoGs HeaD's Linux pr0n clicker 1.0.\nhawgshead@yahoo.com\n");
printf("-----------------------------------\n");
if(argc < 3){
printf("Usage: pron (server) (file) (wingate list)\n EX. pron www.yahoo.com /index.html wingate.list\n");
exit(0);
};
printf("Connecting from localhost\n");
printf("-------------------------\n");
downloadHttpFile(argv[1], argv[2]);
printf("------------------------\n");
printf("Connecting from WinGates\n");
printf("------------------------\n");
parseGates(argv[3], argv[1], argv[2]);
unlink("temp.html");
}